package com.ssy.lingxi.member.merchant.service.web;

import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.model.vo.basic.request.PageRoleByNameVO;
import com.ssy.lingxi.member.merchant.model.vo.basic.request.RoleIdVO;
import com.ssy.lingxi.member.merchant.model.vo.platform.request.PlatformRoleAuthMenuVO;
import com.ssy.lingxi.member.merchant.model.vo.platform.request.PlatformRoleAuthStatusVO;
import com.ssy.lingxi.member.merchant.model.vo.platform.request.PlatformRoleAuthVO;
import com.ssy.lingxi.member.merchant.model.vo.platform.response.PlatformRoleAuthButtonVO;
import com.ssy.lingxi.member.merchant.model.vo.platform.response.PlatformRoleAuthQueryVO;
import com.ssy.lingxi.member.merchant.model.vo.platform.response.PlatformRoleAuthTreeVO;
import org.springframework.http.HttpHeaders;

/**
 * 平台后台 - 会员角色权限相关接口
 * @author 万宁
 * @version 2.0.0
 * @date 2022-04-14
 */
public interface IPlatformRoleAuthService {
    /**
     * 根据名称，模糊、分页查询角色列表
     * @param headers Http头部信息
     * @param pageVO  接口参数
     * @return 查询结果
     */
    Wrapper<PageData<PlatformRoleAuthQueryVO>> pageRoles(HttpHeaders headers, PageRoleByNameVO pageVO);

    /**
     * 查询角色权限，菜单以树形形式返回
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 操作结果
     */
    Wrapper<PlatformRoleAuthTreeVO> treeRoleAuth(HttpHeaders headers, RoleIdVO idVO);

    /**
     * 根据左侧菜单Id，查询右侧按钮列表
     * @param headers Http头部信息
     * @param menuVO 接口参数
     * @return 操作结果
     */
    Wrapper<PlatformRoleAuthButtonVO> getRoleAuthButtons(HttpHeaders headers, PlatformRoleAuthMenuVO menuVO);

    /**
     * 修改角色权限
     * @param headers Http头部信息
     * @param roleAuthVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> updateRoleMenus(HttpHeaders headers, PlatformRoleAuthVO roleAuthVO);

    /**
     * 修改角色状态
     * @param headers Http头部信息
     * @param statusVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> updateRoleStatus(HttpHeaders headers, PlatformRoleAuthStatusVO statusVO);

    /**
     * 更新平台会员权限
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> syncRoleAuth(HttpHeaders headers, RoleIdVO idVO);
}
